package com.barney.support.jpa;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import lombok.Getter;
import lombok.Setter;

import org.apache.commons.lang.StringUtils;

/**
 * 사용자 정의 저장소 지원
 *
 * @author Barney Kim
 */
public class CustomRepositorySupport {

	/**
	 * Like 검색을 위한 검색 문자열 최소 크기.
	 */
	public static final int SEARCH_MIN_LEN = 2;

	@Getter
	@Setter
	@PersistenceContext
	private EntityManager entityManager;

	/**
	 * 문자열이 <tt>null</tt>이 아니고 최소 크기 {@link #SEARCH_MIN_LEN} 보다 큰지 여부를 반환한다.
	 */
	public boolean greateThanMinLength(String str) {
		return greateThanLength(str, SEARCH_MIN_LEN);
	}

	/**
	 * 문자열이 <tt>null</tt>이 아니고 지정한 크기보다 큰지 여부를 반환한다.
	 */
	public boolean greateThanLength(String str, int len) {
		return (StringUtils.isNotEmpty(str) && str.length() >= len);
	}

	/**
	 * 검색용 문자열로 변환하여 반환한다.
	 */
	public String likeExpression(String str) {
		return new StringBuilder("%").append(str).append("%").toString();
	}
}
